// iOS AirPlay投屏功能
class IOSAirPlay {
  constructor() {
    this.isCasting = false
    this.currentSession = null
  }

  // 初始化AirPlay功能
  async init() {
    console.log('🎯 iOS AirPlay初始化')
    
    // 检查环境支持
    const supported = this.checkSupport()
    if (!supported) {
      throw new Error('当前环境不支持AirPlay功能')
    }
    
    return true
  }

  // 检查AirPlay支持
  checkSupport() {
    const ua = navigator.userAgent.toLowerCase()
    const isIOS = ua.includes('iphone') || ua.includes('ipad')
    
    if (!isIOS) {
      console.log('❌ 非iOS设备，不支持AirPlay')
      return false
    }

    // 检查AirPlay API支持
    const video = document.createElement('video')
    const hasAirPlay = !!(video.webkitShowPlaybackTargetPicker)
    
    console.log(`📱 iOS设备检测: ${isIOS}, AirPlay支持: ${hasAirPlay}`)
    return hasAirPlay
  }

  // 开始AirPlay投屏
  async startAirPlay(mediaUrl, title = '') {
    console.log('🚀 启动AirPlay投屏:', { mediaUrl, title })
    
    try {
      // 创建视频元素用于触发AirPlay
      const video = document.createElement('video')
      video.src = mediaUrl
      video.title = title
      
      // 尝试触发AirPlay选择器
      if (video.webkitShowPlaybackTargetPicker) {
        video.webkitShowPlaybackTargetPicker()
        this.isCasting = true
        
        // 监听投屏状态变化
        this.setupAirPlayListeners(video)
        
        return {
          success: true,
          message: 'AirPlay投屏已启动',
          type: 'airplay',
          requiresUserAction: false
        }
      } else {
        throw new Error('AirPlay API不可用')
      }
    } catch (error) {
      console.error('❌ AirPlay启动失败:', error)
      throw error
    }
  }

  // 设置AirPlay监听器
  setupAirPlayListeners(video) {
    // 监听投屏状态变化
    video.addEventListener('webkitplaybacktargetavailabilitychanged', (event) => {
      console.log('🎯 AirPlay设备可用性变化:', event.availability)
    })

    video.addEventListener('webkitcurrentplaybacktargetiswirelesschanged', (event) => {
      this.isCasting = video.webkitCurrentPlaybackTargetIsWireless
      console.log('📡 投屏状态变化:', this.isCasting ? '无线投屏中' : '本地播放')
    })
  }

  // 停止AirPlay投屏
  async stopAirPlay() {
    console.log('⏹️ 停止AirPlay投屏')
    
    // 在iOS中，停止投屏需要用户操作
    // 这里只能更新状态
    this.isCasting = false
    
    return {
      success: true,
      message: 'AirPlay投屏已停止',
      advice: '请在控制中心停止屏幕镜像'
    }
  }

  // 获取投屏状态
  getStatus() {
    return {
      isCasting: this.isCasting,
      type: 'airplay',
      device: 'Apple TV或支持AirPlay的设备',
      message: this.isCasting ? 'AirPlay投屏中' : '未投屏',
      timestamp: new Date().toISOString()
    }
  }

  // 获取AirPlay使用指南
  getAirPlayInstructions() {
    return [
      '🍎 AirPlay使用指南:',
      '',
      '1. 📱 确保iPhone和Apple TV在同一WiFi网络',
      '2. 📺 打开控制中心（从右上角向下滑动）',
      '3. 🔍 点击屏幕镜像图标',
      '4. 🖥️ 选择您的Apple TV或支持AirPlay的设备',
      '5. ✅ 等待连接建立',
      '6. ▶️ 返回视频页面开始播放',
      '',
      '💡 提示:',
      '- 需要Apple TV或支持AirPlay的智能电视',
      '- 确保设备在同一WiFi网络',
      '- 部分视频可能受DRM保护无法投屏'
    ]
  }

  // 检查当前投屏状态
  checkCurrentStatus() {
    const video = document.createElement('video')
    return {
      isWireless: video.webkitCurrentPlaybackTargetIsWireless || false,
      hasTarget: !!video.webkitShowPlaybackTargetPicker,
      timestamp: new Date().toISOString()
    }
  }
}

// 创建全局实例
const iosAirPlay = new IOSAirPlay()

export default iosAirPlay